scrolling: interpret smooth deltas as pixels on quartz
authorJesse van den Kieboom <jessevdk@gmail.com>
Fri, 5 Sep 2014 11:38:30 +0000 (13:38 +0200)
committerJesse van den Kieboom <jessevdk@gmail.com>
Fri, 5 Sep 2014 12:02:11 +0000 (14:02 +0200)
This is a temporary workaround for scrolling units being amplified
on quartz, due to the assumption that smooth scrolling deltas are
always in some abstract unit similar to the one from xi2.

A proper solution for the situation is described in bug #736121, but
since we are close to release, this patch solves the issue temporarily.

https://bugzilla.gnome.org/show_bug.cgi?id=736121

gtk/gtkrange.c
gtk/gtkscrolledwindow.c

index 13f688716c44e49d40f8ea26ed13e50f1da8c917..309f43c5c8fd060914927e59a819941413ce7c29 100644 (file)
@@ -2806,6 +2806,10 @@ _gtk_range_get_wheel_delta (GtkRange       *range,
 
   if (gdk_event_get_scroll_deltas ((GdkEvent *) event, &dx, &dy))
     {
+#ifdef GDK_WINDOWING_QUARTZ
+      scroll_unit = 1;
+#endif
+
       if (dx != 0 &&
           gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL)
         delta = dx * scroll_unit;
index 79f8cd8dddefbfaed251bc2f554e01b55689ab9a..464d14f586644595f7a591b76364ab5293261164 100644 (file)
@@ -2425,7 +2425,12 @@ gtk_scrolled_window_scroll_event (GtkWidget      *widget,
 
           adj = gtk_range_get_adjustment (GTK_RANGE (priv->hscrollbar));
           page_size = gtk_adjustment_get_page_size (adj);
+
+#ifdef GDK_WINDOWING_QUARTZ
+          scroll_unit = 1;
+#else
           scroll_unit = pow (page_size, 2.0 / 3.0);
+#endif
 
           new_value = CLAMP (gtk_adjustment_get_value (adj) + delta_x * scroll_unit,
                              gtk_adjustment_get_lower (adj),
@@ -2447,7 +2452,12 @@ gtk_scrolled_window_scroll_event (GtkWidget      *widget,
 
           adj = gtk_range_get_adjustment (GTK_RANGE (priv->vscrollbar));
           page_size = gtk_adjustment_get_page_size (adj);
+
+#ifdef GDK_WINDOWING_QUARTZ
+          scroll_unit = 1;
+#else
           scroll_unit = pow (page_size, 2.0 / 3.0);
+#endif
 
           new_value = CLAMP (gtk_adjustment_get_value (adj) + delta_y * scroll_unit,
                              gtk_adjustment_get_lower (adj),